import http from '../http/index'

/**
 * 提示函数
 * 禁止点击蒙层、显示一秒后关闭
 */
const tip = msg => {
  uni.showToast({
    title: msg,
    icon: 'none',
    mask: true,
    duration: 1000
  })
}

/**
 * apk整体更新
 */
export function downloadApk() {
  var url = '' // 下载文件地址
  return new Promise((resolve, reject) => {
    var dtask = plus.downloader.createDownload(url, {}, function(d, status) {
      if (status === 200) {
        // 下载成功
        var path = d.filename
        resolve(path)
        // 如果是androind直接安装
        // plus.runtime.install(path) // 安装下载的apk文件

        // 如果是ios跳转到appstore
        // plus.runtime.openURL(url);
      } else {
        // 下载失败
        tip('Download failed: ' + status)
        reject(new Error('下载失败'))
      }
    })
    dtask.start()
  })
}

/**
 * 第一步：获取apk版本号
 */
export function getApkVersion() {
  return new Promise((resolve, reject) => {
    // 获取本地应用资源版本号
    plus.runtime.getProperty(plus.runtime.appid, function(inf) {
      resolve(inf.version)
    })
  })
}

/**
 * 第二步：检查更新
 */
export function checkVersion() {
  plus.nativeUI.showWaiting('检测更新...')
  //         plus.nativeUI.closeWaiting();
}

/**
 * 第三步：下载资源包
 */
export function downWgt() {
  plus.nativeUI.showWaiting('下载wgt文件...')
  return new Promise((resolve, reject) => {
    plus.downloader
      .createDownload('', { filename: '_doc/update/' }, function(d, status) {
        if (status === 200) {
          console.log('下载wgt成功：' + d.filename)
          resolve(d.filename)
          // installWgt(d.filename) // 安装wgt包
        } else {
          console.log('下载wgt失败！')
          plus.nativeUI.alert('下载wgt失败！')
          reject(new Error('下载wgt失败！'))
        }
        plus.nativeUI.closeWaiting()
      })
      .start()
  })
}

/**
 * 第四步：更新应用资源
 * @param {*} path
 */
export function installWgt(path) {
  plus.nativeUI.showWaiting('安装wgt文件...')
  plus.runtime.install(
    path,
    {},
    function() {
      plus.nativeUI.closeWaiting()
      console.log('安装wgt文件成功！')
      plus.nativeUI.alert('应用资源更新完成！', function() {
        plus.runtime.restart()
      })
    },
    function(e) {
      plus.nativeUI.closeWaiting()
      console.log('安装wgt文件失败[' + e.code + ']：' + e.message)
      plus.nativeUI.alert('安装wgt文件失败[' + e.code + ']：' + e.message)
    }
  )
}

// 整包升级
// 1、查询是否有新版本更新
// 2、下载新版本
// 3、安装新版本
export function updateOfAllPackage() {
  // 获取是否有更新
  http.post({
    url: '',
    data: {}
  })
}

// 应用资源升级
// 1、获取应用版本号
// 2、发送请求检查是否有更新
// 3、下载资源包（wgt文件）
// 4、更新资源包（wgt文件）
// 检测更新更好的模式应该是客户端提交本地应用资源版本号到升级服务器，由升级服务器判断是否可更新并且返回App升级资源包下载地址，避免在客户端写资源下载地址；
// 更新时可以在后台静默下载，下次启动是直接更新，避免更新时打断用户操作。
